package com.example.baselibs.net;

import androidx.lifecycle.ViewModel;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
 * 创建一个观察者父类，将一些公共操作放到这里
 * 将一些重复操作的提出来，放到父类以免Loader里每个接口都有重复的代码。
 * 此处处理数据使用的时Rxjava订阅数据处理
 */
public abstract class BaseViewModel extends ViewModel {
    protected <T> Observable<T> observa(Observable<T> observable){
        return observable.subscribeOn(Schedulers.io()) //设定调度器
                .unsubscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());//切换主线程
    }

    //使用例子
    /*public <T> LiveData<T> getData(){
        MutableLiveData<T> data=new MutableLiveData<>();
        ApiService apiService=RetrofitManager.getInstance().getPLCApiService(ApiService.class);
        observa(apiService).map(new Function<T, Object>() {
            @Override
            public Object apply(T t) throws Exception {
                return t;
            }
        }).subscribe(new RxObserver<R>() {
            @Override
            void onStart(String s) {

            }

            @Override
            void onSuccess(R r) {

            }

            @Override
            void onFailure(String s) {

            }
        });
        return data;
    }*/

}
